return 0;
}
diff --git a/src/libsync/discovery.cpp b/src/libsync/discovery.cpp
-index 5d2ab48..840b433 100644
+index c95af63..39c65a2 100644
--- a/src/libsync/discovery.cpp
+++ b/src/libsync/discovery.cpp
-@@ -1127,10 +1127,6 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo(
+@@ -1130,10 +1130,6 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo(
if (_queryLocal != NormalQuery && _queryServer != NormalQuery)
recurse = false;
if ((item->_direction == SyncFileItem::Down || item->_instruction == CSYNC_INSTRUCTION_CONFLICT || item->_instruction == CSYNC_INSTRUCTION_NEW || item->_instruction == CSYNC_INSTRUCTION_SYNC) &&
item->_direction != SyncFileItem::Up &&
(item->_modtime <= 0 || item->_modtime >= 0xFFFFFFFF)) {
-@@ -1159,13 +1155,6 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo(
+@@ -1162,13 +1158,6 @@ void ProcessDirectoryJob::processFileAnalyzeLocalInfo(
}
}
- item->isPermissionsInvalid = localEntry.isPermissionsInvalid;
-
auto recurseQueryLocal = _queryLocal == ParentNotChanged ? ParentNotChanged : localEntry.isDirectory || item->_instruction == CSYNC_INSTRUCTION_RENAME ? NormalQuery : ParentDontExist;
- processFileFinalize(item, path, recurse, recurseQueryLocal, recurseQueryServer);
- };
+ if (item->isDirectory() && serverEntry.isValid() && dbEntry.isValid() && serverEntry.etag == dbEntry._etag && serverEntry.remotePerm != dbEntry._remotePerm) {
+ recurseQueryServer = ParentNotChanged;
diff --git a/src/libsync/discoveryphase.cpp b/src/libsync/discoveryphase.cpp
index 7edd684..f881a21 100644
--- a/src/libsync/discoveryphase.cpp